package com.kyle.java.sorting;

import com.sun.java.swing.plaf.windows.WindowsBorders;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @author kyle
 * @version 1.0
 * @date 2021/4/7 11:34
 */
public class BubbleSorting {


    public static void main(String[] args) {
                int[] array = new int[80000];
                for(int i = 0 ;i<array.length;i++){
                    array[i] = (int)(Math.random()*10000) +1;  //产生从1 - 10000的随机数
                }
                Date date1 = new Date();
                SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yy:MM:dd--hh-mm-ss");
                String beginDate = simpleDateFormat.format(date1);
                SelectSorting.intArraySelectSortingASC(array);
                Date date2 = new Date();
                String endDate = simpleDateFormat.format(date2);
                  for(int i = 0 ;i< array.length;i++) {
                      System.out.println(array[i]);
                  }

                System.out.println("选择排序开始时间："+beginDate);
                System.out.println("选择排序结束时间:"+endDate);
                System.out.println("");




    }
    // 6,1,4,2,5






    public static void intArrayBubbleSortingASC(int[] array){  //从小到大冒泡排序
        boolean stillSort ;
        for(int j = 0 ; j< array.length;j++ ) {
                stillSort = false;  //假定这一轮没有发生排序
                for (int i = 0; i < array.length - j -1; i++) {  //每一次排序完毕，倒数第j大的数都会到数组顶端,所以第j个数不用排序
                    int temp;
                    if (array[i] > array[i + 1]) {  //如果a[i]大于a[i+1]则交换
                        temp = array[i];
                        array[i] = array[i + 1];
                        array[i + 1] = temp;
                        stillSort = true;  //发生了排序，下一轮还要排
                    }
                }
                if(!stillSort){ //有一轮没有发生元素交换  则说明排序完毕，退出排序
                    break;
                }
            }

    }


    public static void intArrayBubbleSortingDESC(int[] array){  //从大到小冒泡排序
        boolean stillSorting = true;  // 设置终止符：一次排序过程中没有发生任何交换

        while (stillSorting) { // 上次发生了交换 继续执行排序
            stillSorting = false;  // 假定这次未发生交换
            for (int i = 0; i < array.length-1; i++) {
                int temp;

                if (array[i] < array[i + 1]) {  //如果a[i]小于a[i+1]则交换
                    temp = array[i];
                    array[i] = array[i + 1];
                    array[i + 1] = temp;
                    stillSorting = true;
                }

            }
        }

    }
}
